package com.xlong.exception;

import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import com.alibaba.fastjson.JSONObject;
import com.xlong.BeanEntity.ResponseMsg;

import cn.dev33.satoken.exception.NotLoginException;


@RestControllerAdvice
public class GlobalExceptionHandler{
	
	// 全局异常拦截（拦截项目中的NotLoginException异常）
	@ExceptionHandler(NotLoginException.class)
	public ResponseMsg<JSONObject> handlerNotLoginException(NotLoginException nle)
	        throws Exception {

	    // 打印堆栈，以供调试
	    nle.printStackTrace(); 

	    // 判断场景值，定制化异常信息 
	    String message = "";
	    if(nle.getType().equals(NotLoginException.NOT_TOKEN)) {
	        message = "未提供token";
	    }
	    else if(nle.getType().equals(NotLoginException.INVALID_TOKEN)) {
	        message = "token无效";
	    }
	    else if(nle.getType().equals(NotLoginException.TOKEN_TIMEOUT)) {
	        message = "token已过期";
	    }
	    else if(nle.getType().equals(NotLoginException.BE_REPLACED)) {
	        message = "token已被顶下线";
	    }
	    else if(nle.getType().equals(NotLoginException.KICK_OUT)) {
	        message = "token已被踢下线";
	    }
	    else {
	        message = "当前会话未登录";
	    }
	    // 返回给前端
	    return new ResponseMsg<JSONObject>(500,message,new JSONObject());
	}

}

